package creating_user_interface;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MultipleWindowsDemo extends JFrame {
	private JTextArea jta;
	private JButton jbtShowHistogram = new JButton("Show Histogram");
	private Histogram histogram = new Histogram();

	// Create a new frame to hold the histogram panel
	private JFrame histogramFrame = new JFrame();
	
	public MultipleWindowsDemo() {
		// Store text area in a scroll pane
		JScrollPane scrollPane = new JScrollPane(jta = new JTextArea());
		scrollPane.setPreferredSize(new Dimension(300, 200));
		jta.setWrapStyleWord(true);
		jta.setLineWrap(true);

		// Place scroll pane and button in the frame
		add(scrollPane, BorderLayout.CENTER);
		add(jbtShowHistogram, BorderLayout.SOUTH);
		
		// Register listener
		jbtShowHistogram.addActionListener(new ActionListener() {
			/** Handle the button action */
			public void actionPerformed(ActionEvent e) {
				// Count the letters in the text area
				int[] count = countLetters();

				// Set the letter count to histogram for display
				histogram.showHistogram(count);
				
				// Show the frame
				histogramFrame.setVisible(true);
			}
		});
		
		// Create a new frame to hold the histogram panel
		histogramFrame.add(histogram);
		histogramFrame.pack();
		histogramFrame.setTitle("Histogram");
	}
	
	/** Count the letters in the text area */
	private int[] countLetters() {
		// Count for 26 letters
		int[] count = new int[26];
		
		// Get contents from the text area
		String text = jta.getText();
		
		// Count occurrence of each letter (case insensitive)
		for (int i = 0; i < text.length(); i++) {
			char character = text.charAt(i);

			if ((character >= 'A') && (character <= 'Z')) {
				count[(int)character - 65]++; // The ASCII for 'A' is 65
			}
			else if ((character >= 'a') && (character <= 'z')) {
				count[(int)character - 97]++; // The ASCII for 'a' is 97
			}
		}
		
		return count; // Return the count array
	}

	public static void main(String[] args) {
		MultipleWindowsDemo frame = new MultipleWindowsDemo();
		frame.setLocationRelativeTo(null); // Center the frame
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setTitle("MultipleWindowsDemo");
		frame.pack();
		frame.setVisible(true);
	}
}



